
package uniriotec.pm.empresa.controle;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import uniriotec.pm.empresa.api.EmpregadoService;

import uniriotec.pm.empresa.modelo.Empregado;

import uniriotec.pm.empresa.util.ServiceUtil;

/**
 * Servlet implementation class EmpregadoServlete
 */
public class EmpregadoServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public EmpregadoServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
    @Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
    @Override
	protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException 
    {
        
         
                String comando = request.getParameter("comando");
                
		if (comando == null) 
                   response.sendRedirect("listar.jsp");
                else if (comando.equals("inserir"))
                   this.inserir(request, response);
                else if (comando.equals("busca4remover"))
                    this.buscarRemover(request, response);
	        else if (comando.equals("remover"))
                   this.remover(request, response);  
                        
                else if (comando.equals("listar"))
                   this.listar(request, response);
                    
                else if (comando.equals("buscar")) 
                    this.buscar(request, response);
                else if (comando.equals("busca4alterar"))
                    this.buscarAlterar(request, response);
                else if (comando.equals("alterar"))
                    this.alterar(request, response);
	}
        
         private void inserir (HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException{
                    EmpregadoService service = ServiceUtil.getServiceFactory().getEmpregadoService();
			String nome = request.getParameter("nome");
                        String cpf  = request.getParameter("cpf");
			if (("".equals(cpf))) {
			response.sendRedirect("pages/empregado/error.jsp?tituloPagina=Inserir Empregado&mensagem=Cpf n�o preenchido!");
			} else
                        if (("".equals(nome))) {
			response.sendRedirect("pages/empregado/error.jsp?tituloPagina=Inserir Empregado&mensagem=Nome n�o preenchido!");
			} else {
				Empregado empregado = new Empregado(cpf,nome);
				
  
				try {
				     service.create(empregado);
				     String mensagem = "Empregado Inserida com Sucesso!";
				     request.setAttribute("mensagem", mensagem);
                                    RequestDispatcher rd = request.getRequestDispatcher("pages/empregado/listar.jsp");
					rd.forward(request, response);
				}  catch (Exception e) {
					response.sendRedirect("pages/Empregado/EmpregadoErroGeral.jsp?tituloPagina=Inserir Empregado&mensagem=erro na inser��o! Detalhe: "
									+ e);
				}
			}

		}
        
        private void remover(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException{
            EmpregadoService service = ServiceUtil.getServiceFactory().getEmpregadoService();
                        try {
			     
                             service.remove(request.getParameter("cpf"));
                             response.sendRedirect("/empresa/sEmpregado?comando=listar");
			     }
                            catch (Exception e) {
			    response.sendRedirect("pages/empregado/error.jsp?tituloPagina=Remover Disciplina&mensagem=erro na remo��o! Detalhe: "
										+ e);
			}
				
			 

        }
        private void listar(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException{
                        
                    EmpregadoService service = ServiceUtil.getServiceFactory().getEmpregadoService();			try {
                  
		        
                        //List<Empregado> listaEmpregado = service.listAll();
			//request.setAttribute("lista_empregados",listaEmpregado );
                	 RequestDispatcher rd = request.getRequestDispatcher("pages/empregado/listar.jsp");
			 rd.forward(request, response);
			} catch (Exception e) {
			  response.sendRedirect("pages/empregado/error.jsp?tituloPagina=Listagem de Empregados! Detalhe: "+ e);
			}

        }
      
     
        private void buscarAlterar (HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException{
            
                    EmpregadoService service = ServiceUtil.getServiceFactory().getEmpregadoService();			
			String idParam = request.getParameter("id");

			if ("".equals(idParam)) {
				response.sendRedirect("pages/empregado/error.jsp?tituloPagina=Alterar Empregado&mensagem=Id n�o preenchido!");
			} else {
			try {
			  Empregado empregado = service.searchByCpf(idParam);
			 if (empregado == null) {
			   response.sendRedirect("pages/empregado/error.jsp?tituloPagina=Alterar Empregado&mensagem=N�o foi poss�vel encontrar o empregado!");
					} else {
						request.setAttribute("empregado", empregado);

						RequestDispatcher rd = request
								.getRequestDispatcher("pages/empregado/alterar.jsp");
						rd.forward(request, response);
					}

				} catch (NumberFormatException e) {
					response
							.sendRedirect("pages/empregado/error.jsp?tituloPagina=Alterar Empregado&mensagem=Entrada inv�lida!");
                                } catch (Exception e) {
					response
							.sendRedirect("pages/empregado/error.jsp?tituloPagina=Alterar Empregado&mensagem=erro na busca! Detalhe: "
									+ e);
				}
			}
        }
      
        
        private void buscarRemover(HttpServletRequest request,
			HttpServletResponse response)throws ServletException, IOException{
            
                        EmpregadoService service = ServiceUtil.getServiceFactory().getEmpregadoService();			String idParam = request.getParameter("id");

			if ("".equals(idParam)) {
				response.sendRedirect("pages/empregado/error.jsp?tituloPagina=Alterar Disciplina&mensagem=Id n�o preenchido!");
			} else {
			try {
			  Empregado empregado = service.searchByCpf(idParam);
			 if (empregado == null) {
			   response.sendRedirect("pages/empregado/error.jsp?tituloPagina=Alterar Disciplina&mensagem=N�o foi poss�vel encontrar disciplina!");
					} else {
						request.setAttribute("disciplina", empregado);

						RequestDispatcher rd = request
								.getRequestDispatcher("pages/disciplina/remove.jsp");
						rd.forward(request, response);
					}

				} catch (NumberFormatException e) {
					response
							.sendRedirect("pages/disciplina/error.jsp?tituloPagina=Alterar Disciplina&mensagem=Entrada inv�lida!");
                                } catch (Exception e) {
					response
							.sendRedirect("pages/disciplina/error.jsp?tituloPagina=Alterar Disciplina&mensagem=erro na busca! Detalhe: "
									+ e);
				}
			}
        }
        
        private void alterar(HttpServletRequest request,
			HttpServletResponse response)throws ServletException, IOException{
            
            EmpregadoService service = ServiceUtil.getServiceFactory().getEmpregadoService();
            String cpf = request.getParameter("cpf");
	    String nome = request.getParameter("nome");
           if ("".equals(cpf) || "".equals(nome)) {
		response.sendRedirect("pages/empregado/error.jsp?tituloPagina=Alterar Disciplina&mensagem=Id ou Nome n�o preenchido!");

			} else {

				Empregado empregado =service.searchByCpf(cpf);
				empregado.setCpf(cpf);
				empregado.setNome(nome);


				try {
					
                                       service.update(empregado);                                    						
					response
							.sendRedirect("/empregado/sEmpregado?comando=listar");
				
				} catch (Exception e) {
					response
							.sendRedirect("pages/empregado/error.jsp?tituloPagina=Alterar Disciplina&mensagem=erro na altera��o! Detalhe: "
									+ e);
				}
			}
         
                 
        
        
		

		
		

		}
	

        
     private void buscar(HttpServletRequest request,	HttpServletResponse response)throws ServletException, IOException{
            EmpregadoService service = ServiceUtil.getServiceFactory().getEmpregadoService();	
            
                 String idParam = request.getParameter("cpf");
                 if ("".equals(idParam)) {
		  response.sendRedirect("pages/empregado/error.jsp?tituloPagina=Buscar Disciplina&mensagem=Id n�o preenchido!");
			} else {
			

				try {
					Empregado empregado= service.searchByCpf(idParam);
					if (empregado == null) {
						response.sendRedirect("pages/empregado/error.jsp?tituloPagina=Buscar Empregado&mensagem=N�o foi poss�vel encontrar empregado!");
					} else {
                                            ArrayList<Empregado> listaEmpregado = new ArrayList<Empregado>();
                                            listaEmpregado.add(empregado);
			                    request.setAttribute("lista_empregados", listaEmpregado);
                	                    RequestDispatcher rd = request.getRequestDispatcher("pages/empregado/listar.jsp");
				            rd.forward(request, response);
					}

				} catch (NumberFormatException e) {
					response
							.sendRedirect("pages/empregado/error.jsp?tituloPagina=Buscar Empregado&mensagem=Entrada inv�lida!");
				} catch (Exception e) {
					response
							.sendRedirect("pages/empregado/error.jsp?tituloPagina=Buscar Empregado&mensagem=erro na busca! Detalhe: "
									+ e);
				}
			
                 }
        
        }
        
}
